Análise Qualidade do Vinho

Inicio

Introdução

Trabalho de conlusão
Matéria : CONCEITOS ESTATÍSTICOS PARA IA
Professora: ADELAIDE ALVES DE OLIVEIRA


Integrantes do Grupo E2GR:

  • EDUARDO MORAIS [ 334530 ]
  • EDUARDO SIQUEIRA DE LIMA [ 334304 ]
  • GABRIEL SHIKAMA [ 334068 ]
  • RICARDO CALIMANIS [ 334759 ]

Análise realizada no dataset WineQuality onde aplicaremos todas as técnicas aprendidas em sala de aula.

Dataset

Carregando o DataSet

A fim de facilitar a compreensão e desenvolvimento de nosso codigo decidimos mudar os nomes das colunas do data set, a tabela a baixo indica o nome original do arquivo e o nome que propuzemos

Análise Exploratória

Observando o DataFrame

Exibindo as Dimensões do dataframe vinhos

[1] 6497   14

Exibindo a Estrutura do dataframe vinhos

Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame':    6497 obs. of  14 variables:
 $ id             : num  1 2 3 4 5 6 7 8 9 10 ...
 $ acidez_fixa    : num  6.6 6.7 10.6 5.4 6.7 6.8 6.6 7.2 5.1 6.2 ...
 $ acidez_volatil : num  0.24 0.34 0.31 0.18 0.3 0.5 0.61 0.66 0.26 0.22 ...
 $ acido_citrico  : num  0.35 0.43 0.49 0.24 0.44 0.11 0 0.33 0.33 0.2 ...
 $ acucar_residual: num  7.7 1.6 2.2 4.8 18.8 ...
 $ cloretos       : num  0.031 0.041 0.063 0.041 0.057 0.075 0.069 0.068 0.027 0.035 ...
 $ fsd            : num  36 29 18 30 65 16 4 34 46 58 ...
 $ tsd            : num  135 114 40 113 224 49 8 102 113 184 ...
 $ densidade      : num  0.994 0.99 0.998 0.994 1 ...
 $ PH             : num  3.19 3.23 3.14 3.42 3.11 3.36 3.33 3.27 3.35 3.11 ...
 $ sulfatos       : num  0.37 0.44 0.51 0.4 0.53 0.79 0.37 0.78 0.43 0.53 ...
 $ grau_alcolico  : num  10.5 12.6 9.8 9.4 9.1 9.5 10.4 12.8 11.4 9 ...
 $ qualidade      : num  5 6 6 6 5 5 4 6 7 6 ...
 $ tipo           : chr  "WHITE" "WHITE" "RED" "WHITE" ...
 - attr(*, "spec")=
  .. cols(
  ..   id = col_double(),
  ..   acidez_fixa = col_double(),
  ..   acidez_volatil = col_double(),
  ..   acido_citrico = col_double(),
  ..   acucar_residual = col_double(),
  ..   cloretos = col_double(),
  ..   fsd = col_double(),
  ..   tsd = col_double(),
  ..   densidade = col_double(),
  ..   PH = col_double(),
  ..   sulfatos = col_double(),
  ..   grau_alcolico = col_double(),
  ..   qualidade = col_double(),
  ..   tipo = col_character()
  .. )

Validações Iniciais

Exibindo a Sumario e um histograma inicial do dataframe vinhos

Skim summary statistics
 n obs: 6497 
 n variables: 13 

── Variable type:character ───────────────────────────────────────────────────────────────────────────────────────────
 variable missing complete    n min max empty n_unique
     tipo       0     6497 6497   3   5     0        2

── Variable type:numeric ─────────────────────────────────────────────────────────────────────────────────────────────
        variable missing complete    n    mean     sd    p0    p25     p50     p75   p100     hist
     acidez_fixa       0     6497 6497   7.22   1.3   3.8    6.4     7       7.7    15.9  ▁▇▇▂▁▁▁▁
  acidez_volatil       0     6497 6497   0.34   0.16  0.08   0.23    0.29    0.4     1.58 ▇▇▂▁▁▁▁▁
   acido_citrico       0     6497 6497   0.32   0.15  0      0.25    0.31    0.39    1.66 ▂▇▂▁▁▁▁▁
 acucar_residual       0     6497 6497   5.44   4.73  0.6    1.8     3       8.1    45.8  ▇▂▂▁▁▁▁▁
        cloretos       0     6497 6497   0.056  0.035 0.009  0.038   0.047   0.065   0.61 ▇▁▁▁▁▁▁▁
       densidade       0     6497 6497   0.99   0.003 0.99   0.99    0.99    1       1.01 ▂▇▇▅▁▁▁▁
             fsd       0     6497 6497  30.53  17.75  1     17      29      41     289    ▇▃▁▁▁▁▁▁
   grau_alcolico       0     6497 6497  10.49   1.22  0.96   9.5    10.3    11.3    14.9  ▁▁▁▁▆▇▃▁
              PH       0     6497 6497   3.22   0.16  2.72   3.11    3.21    3.32    4.01 ▁▃▇▇▃▁▁▁
       qualidade       0     6497 6497   5.82   0.87  3      5       6       6       9    ▁▁▆▇▁▃▁▁
        sulfatos       0     6497 6497   0.53   0.15  0.22   0.43    0.51    0.6     2    ▅▇▂▁▁▁▁▁
             tsd       0     6497 6497 115.74  56.52  6     77     118     156     440    ▅▆▇▃▁▁▁▁

Observa-se que:

  • O campo acucar_residual,fsd, tsd possuem um desvio padrão acima das demais variaveis
  • A maioria dos histogramas apresenta uma distribuição normal entretanto não centralizado o que pode indicar a presença de outliers

Checar presença de nulos

             id     acidez_fixa  acidez_volatil   acido_citrico acucar_residual        cloretos             fsd             tsd       densidade              PH        sulfatos   grau_alcolico       qualidade            tipo 
          FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE           FALSE 

O resultado acima nos descreve que não há presença de nulos na base, isto é indicado pelo retorno FALSE em cada variável

Checar presença de Registros Duplicados

Para prover melhor performance e acurácia de nossos modelos iremos verificar a existência de registros duplicados e removê-los se existir, mais antes é necessário remover uma coluna, ou simplesmente ignorar, que é a coluna ID que contem algum tipo de código incremental.

# A tibble: 1,177 x 13
   acidez_fixa acidez_volatil acido_citrico acucar_residual cloretos   fsd   tsd densidade    PH sulfatos grau_alcolico qualidade tipo 
         <dbl>          <dbl>         <dbl>           <dbl>    <dbl> <dbl> <dbl>     <dbl> <dbl>    <dbl>         <dbl>     <dbl> <chr>
 1         6.6           0.24         0.35             7.7     0.031    36   135     0.994  3.19    0.37           10.5         5 WHITE
 2         6.6           0.25         0.36             8.1     0.045    54   180     0.996  3.08    0.42            9.2         5 WHITE
 3         7.2           0.63         0                1.9     0.097    14    38     0.997  3.37    0.580           9           6 RED  
 4         8.5           0.15         0.49             1.5     0.031    17   122     0.993  3.03    0.4            10.3         6 WHITE
 5         6.6           0.19         0.43            10.9     0.045    53   154     0.998  3.52    0.77           10.4         6 WHITE
 6         7.2           0.32         0.3              8.25    0.02     14   104     0.994  2.99    0.44           11.4         6 WHITE
 7         6.4           0.45         0.07             1.1     0.03     10   131     0.990  2.97    0.28           10.8         5 WHITE
 8         6.3           0.24         0.290           13.7     0.035    53   134     0.996  3.17    0.38           10.6         6 WHITE
 9        11.1           0.31         0.53             2.2     0.06      3    10     0.996  3.02    0.83           10.9         7 RED  
10         7             0.23         0.26             7.2     0.041    21    90     0.995  3.22    0.55            9.5         6 WHITE
# … with 1,167 more rows

De fato existem 1176 registros duplicados onde:

# A tibble: 2 x 2
  tipo      n
  <chr> <int>
1 RED     240
2 WHITE   937

Removendo as linhas duplicadas

Histograma

Imprimindo Histogramas das variaveis

Podemos observar que quase em todas variáveis possuem um desenho ser similar à uma distribuição normal no entanto isso se deu pois mais à esquerda exceto grau alcoolico. Isso pode indicar presença de Outliers. A Conslusão que já se pode tirar é que há erros no Teor alcoolico, haja visto que é sabido que não existe vinhos com teor alcoolico a baixo de 8.

Explorando o DataSet

Nosso intuito nesta parte é entender se podemos considerar o dataset como um todo ou se devemos observá-los por tipo de vinho para isso iremos agregar os dados por tipo de vinho e ver como as variáveis se comportam

  Group.1 acidez_fixa acidez_volatil acido_citrico acucar_residual   cloretos      fsd      tsd   densidade        PH  sulfatos grau_alcolico tipo
1     RED   1.7244751      0.1828621     0.1953835        1.352552 0.04936924 10.45414 33.42622 0.001859119 0.1535224 0.1707834      1.168107   NA
2   WHITE   0.8648942      0.1032085     0.1223250        4.808328 0.02314657 17.21688 43.11269 0.002830119 0.1514866 0.1135190      1.215335   NA

Nos parece que há algumas diferenças significativas levando em consideração, os desvios padrão agregado por tipo de vinho onde:

Observações
1 Acidez fixa é quase o dobro em vinhos Tintos
2 Acidez Volatil é maior 0.7 desvios em Tintos
3 Ácido Cítrico é quase 4 desvios maior em Brancos
4 Cloretos maior que 2 desvios em Tintos
5 Sulfatos (fsd e tsd) é Maior em Brancos
6 Densidade é maior em Brancos

Entretanto a Qualidade não varia, ou seja em nossa perceção as características que determinam qualidade para os vinhos são diferentes e iremos ver a seguir a correlação dessas variáveis.

Preparação dos Dados

Inicio

Transformação de qualidade em variável categórica

Decidimos por classificar a nota da qualidade inicialmente em três grupos:

Grupo Notas
Ruim 0 ~ 5.99
Regular 6 ~ 7.99
Bom >= 8

Neste caso, poderíamos utilizar algoritmos supervisionados como o K-means pra predizer em qual categoria um vinho se encontra.

Porém, consideramos que isso não faria sentido para rodar os modelos não supervisionados.

Para rodar este modelo, decidimos criar a variável GrupoQualidade, sendo qualquer qualidade com valor maior ou superior a 6 é classificado como vinho “BOM”. A variável GrupoQualidade será nossa variável dependente no caso.

Como Identificamos que pode fazer sentido analisar o vinho de maneira separada por tipo já que muitas variáveis tendem a se comportar de forma diferente vamos iniciar a preparação dos dados separando o dataset em 2 : df_base_tinto e df_base_branco

Transformação Box Cox

Em estatística, uma transformação de potência é uma família de funções que são aplicadas para criar a transformação monotônica de dados usando funções de potência. Esta é uma técnica de transformação de dados útil usada para estabilizar a variância, tornar os dados mais semelhantes à distribuição normal, melhorar a validade das medidas de associação (como a correlação de Pearson entre as variáveis) e para outros procedimentos de estabilização de dados.

Tanto a forma linear quanto a logarítmica são dois casos particulares de uma família mais extensa de transformações não-lineares. A transformação de potência é definida como uma função de variação contínua, em relação ao parâmetro de potência ?? (lambda), ou seja, x??. Uma classe geral de transformação que pode ser utilizada é a de Box-Cox, definida por:

para ?? diferente de 0 \[f_\lambda(x) = \frac{(x)^\lambda - 1}{\lambda} \]

para ?? = 0 \[f_0 = log(x)\]

Se a assimetria for 0, os dados são perfeitamente simétricos. Como regra geral: Se a assimetria for menor que -1 ou maior que 1, a distribuição é muito distorcida. Se a assimetria estiver entre -0,5 e 0,5, a distribuição é aproximadamente simétrica.

Usamos a transformação Boxcox e transformamos os dados e depois verificaremos a assimetria.

Vinho Tinto

Antes de transformar

    acidez_fixa  acidez_volatil   acido_citrico acucar_residual        cloretos             fsd             tsd       densidade              PH        sulfatos   grau_alcolico       qualidade 
     0.91485260      0.73281550      0.31273584      4.54525487      5.50447109      1.22160470      1.53514979      0.02442147      0.18594471      2.40027683     -0.41917821      0.19029133 

Transformado

   trans.acidez_fixa trans.acidez_volatil trans.acido_citrico trans.acucar_residual trans.cloretos  trans.fsd   trans.tsd trans.densidade    trans.PH trans.sulfatos trans.grau_alcolico trans.qualidade trans.tipo trans.GrupoQualidade trans.GrupoQualidadeF
1         1.29810397          -1.30627760           1.1128181          -0.001850401    -0.82713940  0.4996845  0.11714245      0.48189651 -1.11049223    -1.10481974         -0.54687971       0.4734439        RED                    0                  Ruim
2        -0.90674030          -0.04068574          -0.8320752          -1.770944466    -0.19322793  0.3275594  0.40235823     -0.67524163  0.35076797     1.00360974         -0.79972927      -0.7472466        RED                    0                  Ruim
3        -1.07715256           0.54161620          -1.3950707          -1.413132729    -0.48812008 -1.6983347 -2.14478317     -1.48157418  0.15723705    -3.44091800         -0.03188984      -2.0440277        RED                    0                  Ruim
4        -0.58885353           0.78209311           0.2939156           0.429376804    -0.54128582  1.4291018  1.43274060     -1.38397230 -0.23511109     0.95548972          2.14452807       0.4734439        RED                    0                  Ruim
5        -0.66563360           1.11995637          -0.5761682          -0.585096957     0.71805697  0.2332445  1.03758418     -0.05537573 -0.23511109     0.11482793         -0.96653593      -0.7472466        RED                    0                  Ruim
6        -1.25603319          -1.30627760          -0.9344380          -2.185373773    -0.65146465  0.2332445 -0.38413330     -1.14019941  0.73269923     0.51835513         -0.37657898       1.6342878        RED                    1                  Ruim
7         0.55286643           0.39063408          -0.1155356          -0.369266476     0.83055275 -0.6853877 -0.78844554      0.53017178 -0.23511109     0.63720916         -0.71579582      -0.7472466        RED                    0                  Ruim
8        -0.51376096           1.11995637          -1.3950707          -0.001850401     0.02510614  0.4996845 -0.38413330      0.50871772  0.66951162    -0.20144425         -0.88331005      -0.7472466        RED                    0                  Ruim
9        -0.90674030           0.33909336          -1.3950707           0.429376804    -0.33575840  1.3405065  0.77769185     -0.96705101  0.79570235    -0.56532142          0.67340363       0.4734439        RED                    0                  Ruim
10       -0.09550469           0.78209311          -1.3950707          -2.185373773     0.59812238 -1.1057987 -1.46244398     -0.54570095  0.79570235    -0.37679561         -0.79972927      -0.7472466        RED                    0                  Ruim
11       -0.74416367          -0.09792533           1.1128181           2.042197146    -1.01673184  1.0370678  1.67281014      0.37457133  0.22194040     0.85525644          0.05512239      -0.7472466        RED                    0                  Ruim
12        0.85556854           0.28691575           0.1915528           0.760103637     0.36775371  0.2332445  0.31356576      0.64276330 -1.31764793     1.52972247         -0.37657898       0.4734439        RED                    0                  Ruim
13       -0.66563360           1.03231257          -1.3950707           0.228898736    -0.38540000  0.7249562  0.34379086     -0.20610194 -0.10353414    -1.91937754         -0.88331005      -0.7472466        RED                    0                  Ruim
14        0.33248920           0.71132987          -0.1155356          -0.369266476     0.14591307 -0.6853877 -0.38413330      0.77670817 -0.16922232    -0.20144425         -0.37657898       0.4734439        RED                    0                  Ruim
15       -0.03070873           0.68748629          -0.2690798           0.298789583     0.53510993 -1.3722386 -0.15321959     -0.31384135  0.41489447    -0.37679561          0.49512800      -0.7472466        RED                    0                  Ruim
16        0.60552813           1.22719411           2.0852647          -1.101346266     3.49260072  0.4996845  0.77769185     -0.09842740 -2.82624749     2.49091477         -1.13191376       0.4734439        RED                    0                  Ruim
17       -1.07715256           0.78209311          -1.3950707           0.940494470     1.10712681  0.7249562 -0.24108654     -0.22225872  0.92115940     0.03971108         -0.11856806      -0.7472466        RED                    0                  Ruim
18        0.60552813          -1.81919259           0.3450970          -0.369266476    -0.38540000  1.8387277  0.84207319      0.53017178  0.85852205     1.30764683         -0.20491030       1.6342878        RED                    1                  Ruim
19        1.67848445          -0.52343785           1.3175437           1.166359316     0.85760115  1.3854754  1.37651657      2.29659343 -0.70205317     1.62973885         -1.04940460      -0.7472466        RED                    0                  Ruim
20        0.03280413           1.33199018           1.2663623          -0.369266476     1.26205563  1.5526717  2.00258670      0.10597572 -0.63472534     0.45621255         -0.96653593      -0.7472466        RED                    0                  Ruim
21       -0.16162642           0.96544681          -1.0879823          -0.585096957    -0.01678723  0.6536556 -0.07052436     -0.22764463  0.60613844     0.45621255          0.40647376      -0.7472466        RED                    0                  Ruim
22        0.60552813           0.87471384          -0.8320752           0.760103637     0.50279295 -0.2200077  0.25109265      1.16725178  0.02724537    -0.66498947         -0.79972927       0.4734439        RED                    0                  Ruim
23       -1.25603319          -0.92972053          -0.3202612          -0.001850401    -2.05372208  1.0370678  0.37337961     -0.04999500  1.04589127     0.90605649         -0.63151191       0.4734439        RED                    0                  Ruim
24       -1.54179892          -0.15598858          -0.9344380          -1.101346266    -0.05953776  0.4996845 -0.28716979     -1.44903433  0.92115940    -0.76853705          0.67340363       0.4734439        RED                    0                  Ruim
25       -0.51376096          -1.00195901          -0.1667170          -0.369266476    -0.59571744  1.1453673  0.37337961     -0.50793589  0.79570235    -0.76853705         -0.37657898      -2.0440277        RED                    0                  Ruim
26        0.44468133          -1.15088850           0.7033668           2.102183529    -0.28720784 -0.8805269 -1.46244398     -0.06613768 -0.03804531    -0.03795208          1.49126777       1.6342878        RED                    1                  Ruim
27       -0.16162642           1.22719411          -1.1903451           0.155658083     0.46991515  0.2332445  0.53891347      0.15972717 -0.30120165     0.18751981         -0.54687971      -0.7472466        RED                    0                  Ruim
28       -2.07169956           0.78209311          -1.3950707           0.429376804    -0.65146465 -0.8805269 -1.26132813     -2.24251338  1.35460259    -0.37679561          2.23904186      -0.7472466        RED                    0                  Ruim
29        2.48598925          -1.30627760           2.3923531          -0.827449926    -0.19322793 -1.1057987 -1.26132813      2.19035827 -3.12595443     1.00360974         -1.69920708       0.4734439        RED                    0                  Ruim
30        0.55286643          -0.27470530           0.1915528           0.760103637     0.50279295  0.5786969  1.37651657      0.77670817  0.09233910     0.03971108         -0.79972927       0.4734439        RED                    0                  Ruim
31        0.15614188           0.85173934          -0.0643542          -0.175936801     0.18464179 -0.2200077  0.21878287      0.48189651  0.02724537    -0.87619130         -1.04940460      -2.0440277        RED                    0                  Ruim
32       -3.39884588           0.07143227          -0.6273496          -0.175936801    -1.44558384 -0.6853877  0.79948164     -1.78556382  3.56674009    -0.56532142          2.42894867      -2.0440277        RED                    0                  Ruim
33        0.09507466           1.14160592          -0.9344380          -0.369266476    -0.59571744 -1.3722386 -1.83117423     -1.36229019 -0.16922232    -0.46932211          1.21584497       0.4734439        RED                    0                  Ruim
 [ reached 'max' / getOption("max.print") -- omitted 1323 rows ]
    acidez_fixa  acidez_volatil   acido_citrico acucar_residual        cloretos             fsd             tsd       densidade              PH        sulfatos   grau_alcolico       qualidade 
   -0.008129168    -0.021898189     0.312735835    -0.069661390    -0.699341059    -0.221201247    -0.079340151     0.001059093     0.005566550    -0.008826281     0.329256703     0.027293765 

Vinho Branco

Antes de transformar

    acidez_fixa  acidez_volatil   acido_citrico acucar_residual        cloretos             fsd             tsd       densidade              PH        sulfatos   grau_alcolico       qualidade 
      0.7013495       1.6414430       1.3196543       1.0366612       4.9573952       1.5699091       0.4583929       0.4477260       0.4595307       0.9342072       0.4465706       0.1113035 

Transformado

    acidez_fixa  acidez_volatil   acido_citrico acucar_residual        cloretos             fsd             tsd       densidade              PH        sulfatos   grau_alcolico       qualidade 
     0.11732154      0.16899788      1.31965427     -0.06001957     -0.14971492      0.09643235      0.01203796      0.42170951     -0.01219325     -0.02215590      0.03746823      0.11130348 

Outliers

A maioria das estatísticas paramétricas, como médias, desvios-padrão e correlações, e todas as estatísticas com base nelas, são altamente sensíveis a outliers. As premissas dos procedimentos estatísticos comuns, como regressão linear e ANOVA, também são baseadas nessas estatísticas, quando outliers podem perturbar a estatística. análise. Assim, nós removemos os outliers.

Possivelmente, o passo mais importante na preparação de dados é identificar outliers. Como se trata de dados multivariados, consideramos apenas aqueles pontos que não possuem nenhum valor de variável de previsão para estar fora dos limites construídos pelos boxplots. A seguinte regra é aplicada:

Um valor preditivo é considerado um valor discrepante somente se for maior que 3 Desvios Padrão. A lógica por trás dessa regra é que os valores extremos extremos estão todos na extremidade superior dos valores e as distribuições são todas positivamente distorcidas.

Vinho Tinto

Identificando os Outliers

Iremos a seguir criar um dataframe somente para ter a quantidade de outliers identificados para cada variável, usaremos o comando abs para obter a posicão absoluta onde o desvio padrão é > 3 como ja fora transformado no passo anterior

     tipo           acidez_fixa.n acidez_volatil.n acido_citrico.n acucar_residual.n  cloretos.n     fsd.n       tsd.n    densidade.n     PH.n     sulfatos.n  grau_alcolico.n
 Length:1           Min.   :2     Min.   :4        Min.   :1       Min.   :7         Min.   :25   Min.   :2   Min.   :0   Min.   :12   Min.   :7   Min.   :6   Min.   :10     
 Class :character   1st Qu.:2     1st Qu.:4        1st Qu.:1       1st Qu.:7         1st Qu.:25   1st Qu.:2   1st Qu.:0   1st Qu.:12   1st Qu.:7   1st Qu.:6   1st Qu.:10     
 Mode  :character   Median :2     Median :4        Median :1       Median :7         Median :25   Median :2   Median :0   Median :12   Median :7   Median :6   Median :10     
                    Mean   :2     Mean   :4        Mean   :1       Mean   :7         Mean   :25   Mean   :2   Mean   :0   Mean   :12   Mean   :7   Mean   :6   Mean   :10     
                    3rd Qu.:2     3rd Qu.:4        3rd Qu.:1       3rd Qu.:7         3rd Qu.:25   3rd Qu.:2   3rd Qu.:0   3rd Qu.:12   3rd Qu.:7   3rd Qu.:6   3rd Qu.:10     
                    Max.   :2     Max.   :4        Max.   :1       Max.   :7         Max.   :25   Max.   :2   Max.   :0   Max.   :12   Max.   :7   Max.   :6   Max.   :10     

Encontramos 67 observações e iremos remover de nossa análise

Validando o Dado

É possivel notar que após a remoção dos outliers os dados se encontram mais normalizados

Antes
Depois

Vinho Branco

     tipo           acidez_fixa.n acidez_volatil.n acido_citrico.n acucar_residual.n  cloretos.n     fsd.n        tsd.n     densidade.n     PH.n      sulfatos.n  grau_alcolico.n
 Length:1           Min.   :20    Min.   :18       Min.   :70      Min.   :0         Min.   :80   Min.   :13   Min.   :23   Min.   :5   Min.   :17   Min.   :10   Min.   :0      
 Class :character   1st Qu.:20    1st Qu.:18       1st Qu.:70      1st Qu.:0         1st Qu.:80   1st Qu.:13   1st Qu.:23   1st Qu.:5   1st Qu.:17   1st Qu.:10   1st Qu.:0      
 Mode  :character   Median :20    Median :18       Median :70      Median :0         Median :80   Median :13   Median :23   Median :5   Median :17   Median :10   Median :0      
                    Mean   :20    Mean   :18       Mean   :70      Mean   :0         Mean   :80   Mean   :13   Mean   :23   Mean   :5   Mean   :17   Mean   :10   Mean   :0      
                    3rd Qu.:20    3rd Qu.:18       3rd Qu.:70      3rd Qu.:0         3rd Qu.:80   3rd Qu.:13   3rd Qu.:23   3rd Qu.:5   3rd Qu.:17   3rd Qu.:10   3rd Qu.:0      
                    Max.   :20    Max.   :18       Max.   :70      Max.   :0         Max.   :80   Max.   :13   Max.   :23   Max.   :5   Max.   :17   Max.   :10   Max.   :0      

Encontramos 153 observações fora do padrão e iremos remover de nossa análise

Validando o Dado

Assim como no vinho tinto, temos a mesma percepção de com poucas extrações o dado ficou também mais proximo do normal

Antes
Depois

Matriz de Correlação

O primeiro passo para iniciar o processo de aplicação de modelos estatísticos é validar as correlações que possam indicar caracteristicas que determinam o fato.E neste caso precisamos saber quais das variáveis podem agregar qualidade ao vinho.

Regressão Linear

Teoria

Regressão linear é uma equação para se estimar a condicional (valor esperado) de uma variável y, dados os valores de algumas outras variáveis x.

Exemplo de regressão linear. A regressão, em geral, tem como objectivo tratar de um valor que não se consegue estimar inicialmente.

A regressão linear é chamada “linear” porque se considera que a relação da resposta às variáveis é uma função linear de alguns parâmetros. Os modelos de regressão que não são uma função linear dos parâmetros se chamam modelos de regressão não-linear. Sendo uma das primeiras formas de análise regressiva a ser estudada rigorosamente, e usada extensamente em aplicações práticas. Isso acontece porque modelos que dependem de forma linear dos seus parâmetros desconhecidos, são mais fáceis de ajustar que os modelos não-lineares aos seus parâmetros, e porque as propriedades estatísticas dos estimadores resultantes são fáceis de determinar.[1]

Formula

\[y_{i} = \alpha + \beta X_{i} + \varepsilon_{i}\]

onde:

\[y_{i}\]: Variável explicada (dependente); representa o que o modelo tentará prever \[\alpha\]: É uma constante, que representa a interceptação da reta com o eixo vertical; \[\beta\]: Representa a inclinação (coeficiente angular) em relação à variável explicativa; \[X_{i}\]: Variável explicativa (independente); \[\varepsilon _{i}}\]: Representa todos os factores residuais mais os possíveis erros de medição. O seu comportamento é aleatório, devido à natureza dos factores que encerra. Para que essa fórmula possa ser aplicada, os erros devem satisfazer determinadas hipóteses, que são: terem distribuição normal, com a mesma variância independentes e independentes da variável explicativa X, ou seja, i.i.d. (independentes e identicamente distribuídas).

fonte: https://pt.wikipedia.org/wiki/Regress%C3%A3o_linear

Vinho Tinto

Primeiro Modelo


Call:
lm(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_tinto_treino)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.91779 -0.42534 -0.02276  0.54255  2.23170 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -0.0005926  0.0240603  -0.025   0.9804    
acidez_fixa      0.0989973  0.0644249   1.537   0.1247    
acidez_volatil  -0.2529691  0.0340139  -7.437 2.18e-13 ***
acido_citrico   -0.0813844  0.0420323  -1.936   0.0531 .  
acucar_residual  0.0337355  0.0340020   0.992   0.3214    
cloretos        -0.0292052  0.0330493  -0.884   0.3771    
densidade       -0.0807869  0.0650825  -1.241   0.2148    
fsd              0.0604981  0.0432092   1.400   0.1618    
grau_alcolico    0.3809766  0.0474714   8.025 2.77e-15 ***
PH              -0.0952265  0.0457608  -2.081   0.0377 *  
sulfatos         0.2302949  0.0296359   7.771 1.90e-14 ***
tsd             -0.0877090  0.0452497  -1.938   0.0529 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7686 on 1020 degrees of freedom
Multiple R-squared:  0.3984,    Adjusted R-squared:  0.3919 
F-statistic:  61.4 on 11 and 1020 DF,  p-value: < 2.2e-16

Vinho Branco

Primeiro Modelo


Call:
lm(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_branco_treino)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.7158 -0.5311 -0.0277  0.5226  3.4384 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      0.008325   0.015059   0.553  0.58045    
acidez_fixa      0.068133   0.023397   2.912  0.00362 ** 
acidez_volatil  -0.150709   0.016759  -8.993  < 2e-16 ***
acido_citrico    0.053721   0.018986   2.829  0.00469 ** 
acucar_residual  0.344473   0.036732   9.378  < 2e-16 ***
cloretos        -0.109751   0.020807  -5.275 1.43e-07 ***
densidade       -0.440484   0.061300  -7.186 8.43e-13 ***
fsd              0.186139   0.021158   8.797  < 2e-16 ***
grau_alcolico    0.212618   0.039284   5.412 6.72e-08 ***
PH               0.138252   0.020761   6.659 3.27e-11 ***
sulfatos         0.080651   0.016046   5.026 5.30e-07 ***
tsd             -0.062914   0.024020  -2.619  0.00886 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8166 on 2954 degrees of freedom
Multiple R-squared:  0.3135,    Adjusted R-squared:  0.3109 
F-statistic: 122.6 on 11 and 2954 DF,  p-value: < 2.2e-16

Árvore de Regressão

Técnica

É muito similar a árvore de decisão, pois segue a mesma ideia: um conjunto de nós de DECISÃO/PERGUNTAS partindo de exemplos.

A única diferença é que a resposta é um número ao invés de uma categoria.

A obtenção de árvores de regressão usando o R é feita por meio da função rpart, tal como nas árvores de decisão.

Vinho Tinto

Call:
rpart(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_tinto_treino)
  n= 1032 

           CP nsplit rel error    xerror       xstd
1  0.18965507      0 1.0000000 1.0010049 0.04793595
2  0.06016577      1 0.8103449 0.8410342 0.04473512
3  0.03987222      2 0.7501792 0.8079763 0.04148181
4  0.03328510      3 0.7103069 0.8159455 0.04190225
5  0.02331796      4 0.6770218 0.7696630 0.03910886
6  0.02114413      5 0.6537039 0.7561527 0.03786086
7  0.01996104      6 0.6325598 0.7528794 0.03825171
8  0.01130783      7 0.6125987 0.7274491 0.03750090
9  0.01087334      8 0.6012909 0.7378201 0.03763991
10 0.01046919      9 0.5904175 0.7283979 0.03759222
11 0.01016485     10 0.5799484 0.7233240 0.03756813
12 0.01000000     11 0.5697835 0.7262831 0.03763340

Variable importance
  grau_alcolico        sulfatos       densidade  acidez_volatil             tsd   acido_citrico     acidez_fixa              PH        cloretos             fsd acucar_residual 
             33              15              11              10               8               6               6               5               4               2               1 

Node number 1: 1032 observations,    complexity param=0.1896551
  mean=0.002004876, MSE=0.9705261 
  left son=2 (766 obs) right son=3 (266 obs)
  Primary splits:
      grau_alcolico  < 0.5396166   to the left,  improve=0.18965510, (0 missing)
      sulfatos       < 0.1511739   to the left,  improve=0.14816780, (0 missing)
      acidez_volatil < 0.220747    to the right, improve=0.13010950, (0 missing)
      acido_citrico  < 0.1147807   to the left,  improve=0.09954917, (0 missing)
      densidade      < -0.6131584  to the right, improve=0.06713087, (0 missing)
  Surrogate splits:
      densidade     < -0.6779414  to the right, agree=0.833, adj=0.353, (0 split)
      cloretos      < -1.186951   to the right, agree=0.763, adj=0.079, (0 split)
      acidez_fixa   < -2.015744   to the right, agree=0.753, adj=0.041, (0 split)
      acido_citrico < 1.854948    to the left,  agree=0.749, adj=0.026, (0 split)
      PH            < 1.568081    to the left,  agree=0.747, adj=0.019, (0 split)

Node number 2: 766 observations,    complexity param=0.06016577
  mean=-0.2508156, MSE=0.7437246 
  left son=4 (492 obs) right son=5 (274 obs)
  Primary splits:
      sulfatos       < 0.1511739   to the left,  improve=0.10577800, (0 missing)
      acidez_volatil < -0.9119238  to the right, improve=0.10047880, (0 missing)
      grau_alcolico  < -0.397931   to the left,  improve=0.07528245, (0 missing)
      acido_citrico  < 0.01241791  to the left,  improve=0.05165566, (0 missing)
      tsd            < 1.151455    to the right, improve=0.04508008, (0 missing)
  Surrogate splits:
      acidez_volatil < -0.7552291  to the right, agree=0.698, adj=0.157, (0 split)
      acido_citrico  < 0.6265947   to the left,  agree=0.693, adj=0.142, (0 split)
      acidez_fixa    < 1.193824    to the left,  agree=0.685, adj=0.120, (0 split)
      grau_alcolico  < 0.12061     to the left,  agree=0.680, adj=0.106, (0 split)
      densidade      < 0.8837916   to the left,  agree=0.663, adj=0.058, (0 split)

Node number 3: 266 observations,    complexity param=0.03987222
  mean=0.7300519, MSE=0.9095286 
  left son=6 (110 obs) right son=7 (156 obs)
  Primary splits:
      sulfatos       < 0.07726951  to the left,  improve=0.1650667, (0 missing)
      acido_citrico  < 0.1147807   to the left,  improve=0.1448919, (0 missing)
      PH             < 0.3828312   to the right, improve=0.1232959, (0 missing)
      acidez_fixa    < -0.7048986  to the left,  improve=0.1113672, (0 missing)
      acidez_volatil < 0.3648637   to the right, improve=0.1021026, (0 missing)
  Surrogate splits:
      acidez_fixa   < -0.6272436  to the left,  agree=0.673, adj=0.209, (0 split)
      acido_citrico < 0.06359931  to the left,  agree=0.662, adj=0.182, (0 split)
      PH            < 0.7642008   to the right, agree=0.658, adj=0.173, (0 split)
      tsd           < -1.410368   to the left,  agree=0.650, adj=0.155, (0 split)
      densidade     < -1.321643   to the left,  agree=0.643, adj=0.136, (0 split)

Node number 4: 492 observations,    complexity param=0.01996104
  mean=-0.4601288, MSE=0.6152957 
  left son=8 (26 obs) right son=9 (466 obs)
  Primary splits:
      acidez_volatil < 1.66197     to the right, improve=0.06604212, (0 missing)
      sulfatos       < -0.4230589  to the left,  improve=0.04278913, (0 missing)
      tsd            < -1.30981    to the left,  improve=0.03373064, (0 missing)
      grau_alcolico  < -0.397931   to the left,  improve=0.02542169, (0 missing)
      fsd            < -0.7829573  to the left,  improve=0.02039282, (0 missing)

Node number 5: 274 observations,    complexity param=0.0332851
  mean=0.1250314, MSE=0.7544035 
  left son=10 (35 obs) right son=11 (239 obs)
  Primary splits:
      tsd            < 1.134522    to the right, improve=0.16128080, (0 missing)
      acidez_volatil < -0.9119238  to the right, improve=0.15608930, (0 missing)
      grau_alcolico  < -0.4192402  to the left,  improve=0.11918110, (0 missing)
      cloretos       < 0.6134846   to the right, improve=0.08898052, (0 missing)
      acidez_fixa    < 0.5791973   to the left,  improve=0.06934507, (0 missing)
  Surrogate splits:
      acucar_residual < 2.12965     to the right, agree=0.880, adj=0.057, (0 split)
      fsd             < 1.870502    to the right, agree=0.876, adj=0.029, (0 split)

Node number 6: 110 observations,    complexity param=0.02114413
  mean=0.268624, MSE=0.9403877 
  left son=12 (58 obs) right son=13 (52 obs)
  Primary splits:
      PH             < 0.3828312   to the right, improve=0.20472790, (0 missing)
      acidez_volatil < -0.06930554 to the right, improve=0.20256360, (0 missing)
      acido_citrico  < 0.1659621   to the left,  improve=0.17148800, (0 missing)
      acidez_fixa    < -0.7048986  to the left,  improve=0.15974650, (0 missing)
      grau_alcolico  < 0.9884923   to the left,  improve=0.05209789, (0 missing)
  Surrogate splits:
      acidez_fixa    < -0.4770287  to the left,  agree=0.882, adj=0.750, (0 split)
      acido_citrico  < -0.0387635  to the left,  agree=0.882, adj=0.750, (0 split)
      acidez_volatil < -0.4915943  to the right, agree=0.809, adj=0.596, (0 split)
      fsd            < -0.4362771  to the right, agree=0.664, adj=0.288, (0 split)
      cloretos       < -0.7378493  to the left,  agree=0.655, adj=0.269, (0 split)

Node number 7: 156 observations,    complexity param=0.01016485
  mean=1.055418, MSE=0.6317732 
  left son=14 (56 obs) right son=15 (100 obs)
  Primary splits:
      grau_alcolico  < 0.9884923   to the left,  improve=0.10330040, (0 missing)
      fsd            < 0.5391907   to the right, improve=0.08807679, (0 missing)
      tsd            < 0.06330731  to the right, improve=0.07717586, (0 missing)
      densidade      < -1.812733   to the right, improve=0.04707774, (0 missing)
      acidez_volatil < -0.3662575  to the right, improve=0.03931849, (0 missing)
  Surrogate splits:
      acidez_volatil < -2.372357   to the left,  agree=0.654, adj=0.036, (0 split)
      acido_citrico  < 0.1659621   to the left,  agree=0.654, adj=0.036, (0 split)
      PH             < -0.8713243  to the left,  agree=0.654, adj=0.036, (0 split)
      fsd            < 1.572158    to the right, agree=0.647, adj=0.018, (0 split)
      tsd            < 1.315958    to the right, agree=0.647, adj=0.018, (0 split)

Node number 8: 26 observations
  mean=-1.313541, MSE=1.085255 

Node number 9: 466 observations,    complexity param=0.01130783
  mean=-0.4125135, MSE=0.5461722 
  left son=18 (300 obs) right son=19 (166 obs)
  Primary splits:
      grau_alcolico  < -0.397931   to the left,  improve=0.04449903, (0 missing)
      sulfatos       < -0.4230589  to the left,  improve=0.03467342, (0 missing)
      acidez_volatil < 0.746838    to the right, improve=0.02965481, (0 missing)
      tsd            < -1.30981    to the left,  improve=0.02423048, (0 missing)
      PH             < 1.44634     to the right, improve=0.01583774, (0 missing)
  Surrogate splits:
      densidade      < -0.6671426  to the right, agree=0.680, adj=0.102, (0 split)
      cloretos       < -0.514703   to the right, agree=0.663, adj=0.054, (0 split)
      tsd            < -1.905212   to the right, agree=0.661, adj=0.048, (0 split)
      acidez_fixa    < -1.492943   to the right, agree=0.657, adj=0.036, (0 split)
      acidez_volatil < -1.113273   to the right, agree=0.652, adj=0.024, (0 split)

Node number 10: 35 observations
  mean=-0.7864715, MSE=0.1371291 

Node number 11: 239 observations,    complexity param=0.02331796
  mean=0.2585151, MSE=0.7053107 
  left son=22 (173 obs) right son=23 (66 obs)
  Primary splits:
      acidez_volatil < -0.9658398  to the right, improve=0.13854760, (0 missing)
      grau_alcolico  < -0.4192402  to the left,  improve=0.10157690, (0 missing)
      acido_citrico  < -1.062392   to the left,  improve=0.09335675, (0 missing)
      PH             < 1.07694     to the right, improve=0.08085371, (0 missing)
      cloretos       < 0.6285956   to the right, improve=0.06499344, (0 missing)
  Surrogate splits:
      acido_citrico < 0.8313204   to the left,  agree=0.774, adj=0.182, (0 split)
      cloretos      < -0.8579218  to the right, agree=0.745, adj=0.076, (0 split)
      fsd           < 1.770708    to the left,  agree=0.741, adj=0.061, (0 split)
      PH            < -2.202895   to the right, agree=0.736, adj=0.045, (0 split)
      tsd           < -1.764199   to the right, agree=0.736, adj=0.045, (0 split)

Node number 12: 58 observations
  mean=-0.1468364, MSE=0.8054716 

Node number 13: 52 observations
  mean=0.7320222, MSE=0.6836096 

Node number 14: 56 observations
  mean=0.7140381, MSE=0.6231425 

Node number 15: 100 observations
  mean=1.24659, MSE=0.534797 

Node number 18: 300 observations
  mean=-0.5284803, MSE=0.4319252 

Node number 19: 166 observations,    complexity param=0.01087334
  mean=-0.2029351, MSE=0.6844154 
  left son=38 (24 obs) right son=39 (142 obs)
  Primary splits:
      tsd       < -1.30981    to the left,  improve=0.09585663, (0 missing)
      fsd       < -0.7829573  to the left,  improve=0.07165548, (0 missing)
      densidade < 0.7954522   to the left,  improve=0.06646794, (0 missing)
      sulfatos  < -0.3321776  to the left,  improve=0.04341652, (0 missing)
      PH        < 1.38521     to the right, improve=0.03526601, (0 missing)
  Surrogate splits:
      fsd             < -1.302597   to the left,  agree=0.904, adj=0.333, (0 split)
      cloretos        < -1.117557   to the left,  agree=0.886, adj=0.208, (0 split)
      sulfatos        < -2.33142    to the left,  agree=0.867, adj=0.083, (0 split)
      acucar_residual < -1.978159   to the left,  agree=0.861, adj=0.042, (0 split)
      PH              < 1.749415    to the right, agree=0.861, adj=0.042, (0 split)

Node number 22: 173 observations,    complexity param=0.01046919
  mean=0.06543446, MSE=0.595937 
  left son=44 (83 obs) right son=45 (90 obs)
  Primary splits:
      grau_alcolico  < -0.4192402  to the left,  improve=0.10170760, (0 missing)
      acidez_volatil < 0.220747    to the right, improve=0.07798942, (0 missing)
      acido_citrico  < -1.164754   to the left,  improve=0.07776564, (0 missing)
      PH             < 0.8271122   to the right, improve=0.06725018, (0 missing)
      cloretos       < 1.25143     to the right, improve=0.05525110, (0 missing)
  Surrogate splits:
      acido_citrico   < -0.0387635  to the left,  agree=0.647, adj=0.265, (0 split)
      acidez_fixa     < 0.3607951   to the left,  agree=0.630, adj=0.229, (0 split)
      acidez_volatil  < 0.3130046   to the right, agree=0.618, adj=0.205, (0 split)
      densidade       < -0.122649   to the right, agree=0.613, adj=0.193, (0 split)
      acucar_residual < 0.3640832   to the left,  agree=0.595, adj=0.157, (0 split)

Node number 23: 66 observations
  mean=0.7646204, MSE=0.6381406 

Node number 38: 24 observations
  mean=-0.8259659, MSE=1.101106 

Node number 39: 142 observations
  mean=-0.0976341, MSE=0.5372948 

Node number 44: 83 observations
  mean=-0.1909308, MSE=0.4815758 

Node number 45: 90 observations
  mean=0.3018602, MSE=0.5848951 

O Modelo apresentado acima teve um desepenho melhor que Regressão Linear Observamos que a variavel Grau Alcoolico é a variavel que possui o maior peso pois ela está no node mais alto da arvore.

Análise da Qualidade do Modelo (Matriz de Confusão)

Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 224  35
         1   0   0
                                         
               Accuracy : 0.8649         
                 95% CI : (0.8171, 0.904)
    No Information Rate : 0.8649         
    P-Value [Acc > NIR] : 0.5449         
                                         
                  Kappa : 0              
                                         
 Mcnemar's Test P-Value : 9.081e-09      
                                         
            Sensitivity : 1.0000         
            Specificity : 0.0000         
         Pos Pred Value : 0.8649         
         Neg Pred Value :    NaN         
             Prevalence : 0.8649         
         Detection Rate : 0.8649         
   Detection Prevalence : 1.0000         
      Balanced Accuracy : 0.5000         
                                         
       'Positive' Class : 0              
                                         

86% de acertividade

Vinho Branco

Call:
rpart(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_branco_treino)
  n= 2966 

          CP nsplit rel error    xerror       xstd
1 0.17619501      0 1.0000000 1.0007017 0.02704089
2 0.04145691      1 0.8238050 0.8253886 0.02465195
3 0.02600484      2 0.7823481 0.7844375 0.02429231
4 0.01758769      3 0.7563432 0.7659587 0.02353418
5 0.01228332      4 0.7387555 0.7575937 0.02327931
6 0.01000000      5 0.7264722 0.7399149 0.02261242

Variable importance
  grau_alcolico       densidade        cloretos             tsd  acidez_volatil             fsd acucar_residual        sulfatos   acido_citrico              PH 
             36              23              12               8               8               5               5               1               1               1 

Node number 1: 2966 observations,    complexity param=0.176195
  mean=0.02317861, MSE=0.9674341 
  left son=2 (1800 obs) right son=3 (1166 obs)
  Primary splits:
      grau_alcolico < 0.3424558   to the left,  improve=0.17619500, (0 missing)
      densidade     < -0.6974774  to the right, improve=0.12381530, (0 missing)
      cloretos      < -0.01120033 to the right, improve=0.09321832, (0 missing)
      tsd           < 0.5387351   to the right, improve=0.04655035, (0 missing)
      acido_citrico < -0.8149336  to the left,  improve=0.03543393, (0 missing)
  Surrogate splits:
      densidade       < -0.6316146  to the right, agree=0.863, adj=0.653, (0 split)
      cloretos        < -0.2502617  to the right, agree=0.741, adj=0.342, (0 split)
      tsd             < -0.4792879  to the right, agree=0.681, adj=0.189, (0 split)
      acucar_residual < 0.2869475   to the right, agree=0.662, adj=0.140, (0 split)
      sulfatos        < -1.098038   to the right, agree=0.620, adj=0.034, (0 split)

Node number 2: 1800 observations,    complexity param=0.04145691
  mean=-0.3091139, MSE=0.706894 
  left son=4 (949 obs) right son=5 (851 obs)
  Primary splits:
      acidez_volatil < -0.07404229 to the right, improve=0.09348947, (0 missing)
      fsd            < -1.413899   to the left,  improve=0.04482435, (0 missing)
      grau_alcolico  < -0.2856169  to the left,  improve=0.04101271, (0 missing)
      cloretos       < 0.5163293   to the right, improve=0.03254169, (0 missing)
      PH             < 0.8886209   to the left,  improve=0.03244542, (0 missing)
  Surrogate splits:
      tsd           < 0.5604489   to the right, agree=0.612, adj=0.179, (0 split)
      acido_citrico < -0.5696854  to the left,  agree=0.581, adj=0.113, (0 split)
      grau_alcolico < -0.3482213  to the left,  agree=0.577, adj=0.105, (0 split)
      densidade     < 0.1770835   to the right, agree=0.576, adj=0.103, (0 split)
      PH            < 0.7082788   to the left,  agree=0.570, adj=0.090, (0 split)

Node number 3: 1166 observations,    complexity param=0.02600484
  mean=0.5361516, MSE=0.9360418 
  left son=6 (608 obs) right son=7 (558 obs)
  Primary splits:
      grau_alcolico   < 1.073028    to the left,  improve=0.06836801, (0 missing)
      fsd             < -1.608991   to the left,  improve=0.05935855, (0 missing)
      acucar_residual < -1.318872   to the left,  improve=0.02510477, (0 missing)
      densidade       < -0.9024215  to the right, improve=0.02276161, (0 missing)
      tsd             < -1.763242   to the left,  improve=0.02232176, (0 missing)
  Surrogate splits:
      densidade       < -1.059489   to the right, agree=0.725, adj=0.425, (0 split)
      acidez_volatil  < 0.03761714  to the left,  agree=0.635, adj=0.237, (0 split)
      cloretos        < -0.519033   to the right, agree=0.633, adj=0.233, (0 split)
      acucar_residual < -1.114568   to the left,  agree=0.551, adj=0.063, (0 split)
      tsd             < -0.1643378  to the right, agree=0.551, adj=0.063, (0 split)

Node number 4: 949 observations,    complexity param=0.01228332
  mean=-0.5525529, MSE=0.6252677 
  left son=8 (135 obs) right son=9 (814 obs)
  Primary splits:
      fsd            < -1.063122   to the left,  improve=0.05939858, (0 missing)
      cloretos       < 0.5163293   to the right, improve=0.04192878, (0 missing)
      PH             < 0.9476561   to the left,  improve=0.02471973, (0 missing)
      acidez_volatil < 0.3491317   to the right, improve=0.02443427, (0 missing)
      grau_alcolico  < -0.1639063  to the left,  improve=0.02399822, (0 missing)
  Surrogate splits:
      tsd             < -0.8873303  to the left,  agree=0.887, adj=0.207, (0 split)
      densidade       < -0.9613     to the left,  agree=0.862, adj=0.030, (0 split)
      acidez_fixa     < 2.86523     to the right, agree=0.861, adj=0.022, (0 split)
      acucar_residual < -1.59975    to the left,  agree=0.860, adj=0.015, (0 split)
      PH              < -2.257615   to the left,  agree=0.859, adj=0.007, (0 split)

Node number 5: 851 observations
  mean=-0.03764077, MSE=0.6581355 

Node number 6: 608 observations,    complexity param=0.01758769
  mean=0.2938036, MSE=0.9043135 
  left son=12 (43 obs) right son=13 (565 obs)
  Primary splits:
      fsd            < -1.608991   to the left,  improve=0.09178650, (0 missing)
      acido_citrico  < -0.8149336  to the left,  improve=0.03930066, (0 missing)
      acidez_volatil < 1.657868    to the right, improve=0.03153874, (0 missing)
      tsd            < -1.553351   to the left,  improve=0.02545143, (0 missing)
      acidez_fixa    < 0.3004013   to the right, improve=0.02138791, (0 missing)
  Surrogate splits:
      tsd < -2.452791   to the left,  agree=0.941, adj=0.163, (0 split)

Node number 7: 558 observations
  mean=0.8002153, MSE=0.8368882 

Node number 8: 135 observations
  mean=-1.025776, MSE=0.6297488 

Node number 9: 814 observations
  mean=-0.4740699, MSE=0.5812249 

Node number 12: 43 observations
  mean=-0.7505292, MSE=1.244715 

Node number 13: 565 observations
  mean=0.3732838, MSE=0.789086 

Nota se que para determinar a qualidade do vinho branco utiliza-se menos variáveis que para vinho tinto

Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 583 159
         1   0   0
                                          
               Accuracy : 0.7857          
                 95% CI : (0.7544, 0.8147)
    No Information Rate : 0.7857          
    P-Value [Acc > NIR] : 0.5212          
                                          
                  Kappa : 0               
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 1.0000          
            Specificity : 0.0000          
         Pos Pred Value : 0.7857          
         Neg Pred Value :    NaN          
             Prevalence : 0.7857          
         Detection Rate : 0.7857          
   Detection Prevalence : 1.0000          
      Balanced Accuracy : 0.5000          
                                          
       'Positive' Class : 0               
                                          

Para vinho branco temos uma acurácia de 78%

Árvore de Decisão

Técnica

É muito utilizada para aprendizagem indutiva e é extremamente prática.

O conhecimento da Árvore de Decisão será baseado em uma estrutura de árvore para assim podermos realizar decisão. Porém, caso não queira representar em estruturá de árvores, pode ser facilmente representada por regras “se/então”. Pode-se utilizar tanto em problemas supervisionados quanto não supervisionados.

A árvore decisão também consegue descobrir quais são os atributos de maior importância para predição formando uma estrutura de nós.

A base é a mesma da árvore de regressão.

Classe de algoritmos de aprendizado baseado na árvore de decisão: ID3(“top-down”), C4.5 etc.

É importante ressaltar que uanto menor a árvore, melhor será a indução. Isso basicamente quer dizer que: caso fique grande, pode cair num problema de overfitting (“100% de acerto”).

Outra coisa que precisa-se lembrar em uma Árvore de Decisão é a entropia, a qual diz o quanto um conjunto de dados aleatório está “impuro”. E sempre varia entre 0 e 1, de acordo com a proporção de +/- no conjunto. Vale lembrar que a entropia é importante para o cálculo de ganho de informação para a árvore.

A entropia (binária) é dada pela seguinte fórmula:

\[Entropia(S) = -\sum p_{+} log_{2} p_{+} - p_{-} log_{2} p_{-}\]

onde:

S: coleção S contendo exemplos p(+): proporção de exemplos positivos em S; p(-): proporção de exemplos negativos em S

Referencia: http://web.tecnico.ulisboa.pt/ana.freitas/bioinformatics.ath.cx/bioinformatics.ath.cx/indexf23d.html?id=199

Vinho Tinto

Call:
rpart(formula = GrupoQualidade ~ acidez_fixa + acidez_volatil + 
    acido_citrico + acucar_residual + cloretos + densidade + 
    fsd + grau_alcolico + PH + sulfatos + tsd, data = df_vinho_tinto_treino)
  n= 1032 

          CP nsplit rel error    xerror       xstd
1 0.10071942      0 1.0000000 1.0000000 0.07890027
2 0.05035971      2 0.7985612 0.8489209 0.07354607
3 0.02158273      3 0.7482014 0.8345324 0.07299987
4 0.01918465      5 0.7050360 0.8920863 0.07514483
5 0.01438849      8 0.6474820 0.9352518 0.07668674
6 0.01000000      9 0.6330935 0.9424460 0.07693844

Variable importance
 grau_alcolico      densidade       sulfatos acidez_volatil            fsd            tsd             PH  acido_citrico    acidez_fixa       cloretos 
            30             11              9              8              8              8              8              7              7              2 

Node number 1: 1032 observations,    complexity param=0.1007194
  predicted class=0  expected loss=0.1346899  P(node) =1
    class counts:   893   139
   probabilities: 0.865 0.135 
  left son=2 (868 obs) right son=3 (164 obs)
  Primary splits:
      grau_alcolico  < 0.9884923   to the left,  improve=42.14039, (0 missing)
      sulfatos       < 0.424181    to the left,  improve=26.51461, (0 missing)
      acidez_volatil < -0.7552291  to the right, improve=24.87296, (0 missing)
      acido_citrico  < 0.2171435   to the left,  improve=19.98735, (0 missing)
      densidade      < -0.7535512  to the right, improve=13.72150, (0 missing)
  Surrogate splits:
      densidade   < -1.35958    to the right, agree=0.875, adj=0.213, (0 split)
      acidez_fixa < -2.188553   to the right, agree=0.847, adj=0.037, (0 split)
      cloretos    < -1.912024   to the right, agree=0.844, adj=0.018, (0 split)
      PH          < 2.806385    to the left,  agree=0.843, adj=0.012, (0 split)
      tsd         < 2.087083    to the left,  agree=0.843, adj=0.012, (0 split)

Node number 2: 868 observations,    complexity param=0.01918465
  predicted class=0  expected loss=0.07258065  P(node) =0.8410853
    class counts:   805    63
   probabilities: 0.927 0.073 
  left son=4 (694 obs) right son=5 (174 obs)
  Primary splits:
      acidez_volatil < -0.7552291  to the right, improve=11.571490, (0 missing)
      sulfatos       < 0.3591132   to the left,  improve= 8.193247, (0 missing)
      grau_alcolico  < 0.01161628  to the left,  improve= 6.779079, (0 missing)
      acido_citrico  < 0.01241791  to the left,  improve= 6.241852, (0 missing)
      cloretos       < -0.623591   to the right, improve= 4.745422, (0 missing)
  Surrogate splits:
      acido_citrico   < 0.8313204   to the left,  agree=0.804, adj=0.023, (0 split)
      acucar_residual < 2.637203    to the left,  agree=0.802, adj=0.011, (0 split)
      fsd             < 2.063933    to the left,  agree=0.802, adj=0.011, (0 split)
      PH              < -2.202895   to the right, agree=0.802, adj=0.011, (0 split)
      sulfatos        < 2.418451    to the left,  agree=0.802, adj=0.011, (0 split)

Node number 3: 164 observations,    complexity param=0.1007194
  predicted class=0  expected loss=0.4634146  P(node) =0.1589147
    class counts:    88    76
   probabilities: 0.537 0.463 
  left son=6 (82 obs) right son=7 (82 obs)
  Primary splits:
      sulfatos       < 0.424181    to the left,  improve=14.097560, (0 missing)
      acidez_fixa    < -0.1285656  to the left,  improve= 7.866123, (0 missing)
      PH             < 0.3828312   to the right, improve= 7.527143, (0 missing)
      acido_citrico  < 0.2171435   to the left,  improve= 7.527143, (0 missing)
      acidez_volatil < -0.126957   to the right, improve= 5.504315, (0 missing)
  Surrogate splits:
      acido_citrico < 0.06359931  to the left,  agree=0.646, adj=0.293, (0 split)
      acidez_fixa   < -0.6272436  to the left,  agree=0.640, adj=0.280, (0 split)
      densidade     < -1.432767   to the left,  agree=0.610, adj=0.220, (0 split)
      tsd           < -1.410368   to the left,  agree=0.591, adj=0.183, (0 split)
      fsd           < 0.371857    to the left,  agree=0.579, adj=0.159, (0 split)

Node number 4: 694 observations
  predicted class=0  expected loss=0.03170029  P(node) =0.6724806
    class counts:   672    22
   probabilities: 0.968 0.032 

Node number 5: 174 observations,    complexity param=0.01918465
  predicted class=0  expected loss=0.2356322  P(node) =0.1686047
    class counts:   133    41
   probabilities: 0.764 0.236 
  left son=10 (110 obs) right son=11 (64 obs)
  Primary splits:
      grau_alcolico < 0.2741428   to the left,  improve=5.894070, (0 missing)
      cloretos      < -0.623591   to the right, improve=5.078161, (0 missing)
      tsd           < 0.4165548   to the right, improve=4.833333, (0 missing)
      densidade     < -1.004914   to the right, improve=4.789272, (0 missing)
      sulfatos      < 0.4872838   to the left,  improve=4.490395, (0 missing)
  Surrogate splits:
      densidade       < -0.2464966  to the right, agree=0.759, adj=0.344, (0 split)
      tsd             < -1.764199   to the right, agree=0.678, adj=0.125, (0 split)
      acido_citrico   < 1.803767    to the left,  agree=0.649, adj=0.047, (0 split)
      fsd             < -1.90854    to the right, agree=0.644, adj=0.031, (0 split)
      acucar_residual < 1.737718    to the left,  agree=0.638, adj=0.016, (0 split)

Node number 6: 82 observations,    complexity param=0.02158273
  predicted class=0  expected loss=0.2560976  P(node) =0.07945736
    class counts:    61    21
   probabilities: 0.744 0.256 
  left son=12 (55 obs) right son=13 (27 obs)
  Primary splits:
      acido_citrico < 0.8825018   to the left,  improve=5.544239, (0 missing)
      acidez_fixa   < 0.1256083   to the left,  improve=4.746402, (0 missing)
      PH            < -0.2021667  to the right, improve=4.746402, (0 missing)
      tsd           < -1.215976   to the right, improve=4.511404, (0 missing)
      cloretos      < 0.3850831   to the left,  improve=3.732539, (0 missing)
  Surrogate splits:
      acidez_fixa    < 0.5791973   to the left,  agree=0.902, adj=0.704, (0 split)
      PH             < -0.2021667  to the right, agree=0.866, adj=0.593, (0 split)
      densidade      < -0.5807761  to the left,  agree=0.817, adj=0.444, (0 split)
      acidez_volatil < -0.7552291  to the right, agree=0.756, adj=0.259, (0 split)
      cloretos       < -0.2402179  to the left,  agree=0.756, adj=0.259, (0 split)

Node number 7: 82 observations,    complexity param=0.05035971
  predicted class=1  expected loss=0.3292683  P(node) =0.07945736
    class counts:    27    55
   probabilities: 0.329 0.671 
  left son=14 (25 obs) right son=15 (57 obs)
  Primary splits:
      fsd             < 0.5391907   to the right, improve=6.945126, (0 missing)
      grau_alcolico   < 1.816099    to the left,  improve=3.483248, (0 missing)
      tsd             < 0.2507296   to the right, improve=2.368370, (0 missing)
      densidade       < -0.7400479  to the right, improve=1.975493, (0 missing)
      acucar_residual < -0.0888936  to the left,  improve=1.550200, (0 missing)
  Surrogate splits:
      tsd            < 0.1687793   to the right, agree=0.854, adj=0.52, (0 split)
      grau_alcolico  < 1.079215    to the left,  agree=0.744, adj=0.16, (0 split)
      acidez_volatil < -1.914234   to the left,  agree=0.707, adj=0.04, (0 split)
      densidade      < 1.604725    to the right, agree=0.707, adj=0.04, (0 split)

Node number 10: 110 observations
  predicted class=0  expected loss=0.1363636  P(node) =0.1065891
    class counts:    95    15
   probabilities: 0.864 0.136 

Node number 11: 64 observations,    complexity param=0.01918465
  predicted class=0  expected loss=0.40625  P(node) =0.0620155
    class counts:    38    26
   probabilities: 0.594 0.406 
  left son=22 (36 obs) right son=23 (28 obs)
  Primary splits:
      PH        < -0.2681564  to the right, improve=5.573413, (0 missing)
      densidade < -1.004914   to the right, improve=4.017857, (0 missing)
      cloretos  < -0.01721581 to the right, improve=3.490385, (0 missing)
      tsd       < 0.4304702   to the right, improve=3.375000, (0 missing)
      fsd       < 0.6161762   to the right, improve=2.910437, (0 missing)
  Surrogate splits:
      acidez_fixa   < 0.3885853   to the left,  agree=0.797, adj=0.536, (0 split)
      tsd           < -0.3109926  to the right, agree=0.797, adj=0.536, (0 split)
      densidade     < 0.3584663   to the left,  agree=0.719, adj=0.357, (0 split)
      fsd           < 0.280402    to the right, agree=0.719, adj=0.357, (0 split)
      grau_alcolico < 0.4508009   to the right, agree=0.656, adj=0.214, (0 split)

Node number 12: 55 observations
  predicted class=0  expected loss=0.1272727  P(node) =0.05329457
    class counts:    48     7
   probabilities: 0.873 0.127 

Node number 13: 27 observations,    complexity param=0.02158273
  predicted class=1  expected loss=0.4814815  P(node) =0.02616279
    class counts:    13    14
   probabilities: 0.481 0.519 
  left son=26 (17 obs) right son=27 (10 obs)
  Primary splits:
      tsd           < -1.173375   to the right, improve=2.516776, (0 missing)
      densidade     < -0.8400237  to the right, improve=2.167196, (0 missing)
      grau_alcolico < 1.816099    to the right, improve=1.639376, (0 missing)
      acidez_fixa   < 1.107517    to the right, improve=1.516776, (0 missing)
      acido_citrico < 1.445497    to the right, improve=1.516776, (0 missing)
  Surrogate splits:
      acido_citrico   < 1.087227    to the right, agree=0.889, adj=0.7, (0 split)
      cloretos        < 0.4526027   to the left,  agree=0.815, adj=0.5, (0 split)
      fsd             < -0.9931628  to the right, agree=0.815, adj=0.5, (0 split)
      acidez_volatil  < -0.8241137  to the left,  agree=0.741, adj=0.3, (0 split)
      acucar_residual < -0.0888936  to the right, agree=0.704, adj=0.2, (0 split)

Node number 14: 25 observations
  predicted class=0  expected loss=0.36  P(node) =0.02422481
    class counts:    16     9
   probabilities: 0.640 0.360 

Node number 15: 57 observations
  predicted class=1  expected loss=0.1929825  P(node) =0.05523256
    class counts:    11    46
   probabilities: 0.193 0.807 

Node number 22: 36 observations,    complexity param=0.01438849
  predicted class=0  expected loss=0.2222222  P(node) =0.03488372
    class counts:    28     8
   probabilities: 0.778 0.222 
  left son=44 (28 obs) right son=45 (8 obs)
  Primary splits:
      PH             < 0.5743585   to the left,  improve=3.337302, (0 missing)
      acido_citrico  < 0.9848646   to the right, improve=2.009662, (0 missing)
      cloretos       < -0.1937185  to the right, improve=2.000000, (0 missing)
      acidez_volatil < -1.038808   to the right, improve=1.469444, (0 missing)
      densidade      < -0.702244   to the right, improve=1.185185, (0 missing)
  Surrogate splits:
      acido_citrico < 0.1147807   to the right, agree=0.806, adj=0.125, (0 split)
      cloretos      < -1.333856   to the right, agree=0.806, adj=0.125, (0 split)
      fsd           < 1.666146    to the left,  agree=0.806, adj=0.125, (0 split)

Node number 23: 28 observations
  predicted class=1  expected loss=0.3571429  P(node) =0.02713178
    class counts:    10    18
   probabilities: 0.357 0.643 

Node number 26: 17 observations
  predicted class=0  expected loss=0.3529412  P(node) =0.01647287
    class counts:    11     6
   probabilities: 0.647 0.353 

Node number 27: 10 observations
  predicted class=1  expected loss=0.2  P(node) =0.009689922
    class counts:     2     8
   probabilities: 0.200 0.800 

Node number 44: 28 observations
  predicted class=0  expected loss=0.1071429  P(node) =0.02713178
    class counts:    25     3
   probabilities: 0.893 0.107 

Node number 45: 8 observations
  predicted class=1  expected loss=0.375  P(node) =0.007751938
    class counts:     3     5
   probabilities: 0.375 0.625 

Análise da Qualidade do Modelo

Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 216  28
         1   8   7
                                          
               Accuracy : 0.861           
                 95% CI : (0.8128, 0.9007)
    No Information Rate : 0.8649          
    P-Value [Acc > NIR] : 0.615236        
                                          
                  Kappa : 0.2165          
                                          
 Mcnemar's Test P-Value : 0.001542        
                                          
            Sensitivity : 0.9643          
            Specificity : 0.2000          
         Pos Pred Value : 0.8852          
         Neg Pred Value : 0.4667          
             Prevalence : 0.8649          
         Detection Rate : 0.8340          
   Detection Prevalence : 0.9421          
      Balanced Accuracy : 0.5821          
                                          
       'Positive' Class : 0               
                                          

Até agora notamos que este foi o modelo que mais acertou com 86% de acurácia, justamente por que a técnica é capaz de prever com maior exatidao quais as variaveis mais importantes para determinar a qualidade.

Vinho Branco

Call:
rpart(formula = GrupoQualidade ~ acidez_fixa + acidez_volatil + 
    acido_citrico + acucar_residual + cloretos + densidade + 
    fsd + grau_alcolico + PH + sulfatos + tsd, data = df_base_branco)
  n= 3943 

          CP nsplit rel error    xerror       xstd
1 0.04323995      0 1.0000000 1.0000000 0.03105500
2 0.01461632      2 0.9135201 0.9403167 0.03034941
3 0.01096224      3 0.8989038 0.9317905 0.03024483
4 0.01000000      5 0.8769793 0.9427527 0.03037911

Variable importance
  grau_alcolico       densidade        cloretos             tsd acucar_residual        sulfatos             fsd     acidez_fixa 
             44              26              14               7               4               2               2               1 

Node number 1: 3943 observations,    complexity param=0.04323995
  predicted class=0  expected loss=0.2082171  P(node) =1
    class counts:  3122   821
   probabilities: 0.792 0.208 
  left son=2 (2421 obs) right son=3 (1522 obs)
  Primary splits:
      grau_alcolico   < 10.85    to the left,  improve=180.10410, (0 missing)
      densidade       < 0.99181  to the right, improve=138.13450, (0 missing)
      cloretos        < 0.0395   to the right, improve= 98.30691, (0 missing)
      tsd             < 153.5    to the right, improve= 55.31960, (0 missing)
      acucar_residual < 6.15     to the right, improve= 32.35121, (0 missing)
  Surrogate splits:
      densidade       < 0.992005 to the right, agree=0.863, adj=0.645, (0 split)
      cloretos        < 0.0375   to the right, agree=0.743, adj=0.334, (0 split)
      tsd             < 114.5    to the right, agree=0.683, adj=0.180, (0 split)
      acucar_residual < 5.05     to the right, agree=0.648, adj=0.088, (0 split)
      sulfatos        < 0.375    to the right, agree=0.631, adj=0.045, (0 split)

Node number 2: 2421 observations
  predicted class=0  expected loss=0.08839323  P(node) =0.6139995
    class counts:  2207   214
   probabilities: 0.912 0.088 

Node number 3: 1522 observations,    complexity param=0.04323995
  predicted class=0  expected loss=0.3988173  P(node) =0.3860005
    class counts:   915   607
   probabilities: 0.601 0.399 
  left son=6 (1219 obs) right son=7 (303 obs)
  Primary splits:
      grau_alcolico   < 12.55    to the left,  improve=36.07178, (0 missing)
      fsd             < 11.5     to the left,  improve=16.41962, (0 missing)
      cloretos        < 0.0395   to the right, improve=15.20868, (0 missing)
      PH              < 3.065    to the left,  improve=13.54398, (0 missing)
      acucar_residual < 2.05     to the left,  improve=13.10818, (0 missing)
  Surrogate splits:
      densidade      < 0.989595 to the right, agree=0.840, adj=0.195, (0 split)
      acidez_volatil < 0.595    to the left,  agree=0.804, adj=0.013, (0 split)
      sulfatos       < 0.275    to the right, agree=0.803, adj=0.010, (0 split)
      tsd            < 21.5     to the right, agree=0.803, adj=0.010, (0 split)
      acidez_fixa    < 4.75     to the right, agree=0.802, adj=0.003, (0 split)

Node number 6: 1219 observations
  predicted class=0  expected loss=0.3445447  P(node) =0.3091555
    class counts:   799   420
   probabilities: 0.655 0.345 

Node number 7: 303 observations,    complexity param=0.01461632
  predicted class=1  expected loss=0.3828383  P(node) =0.07684504
    class counts:   116   187
   probabilities: 0.383 0.617 
  left son=14 (14 obs) right son=15 (289 obs)
  Primary splits:
      cloretos       < 0.0495   to the right, improve=8.743060, (0 missing)
      fsd            < 21.5     to the left,  improve=8.341580, (0 missing)
      tsd            < 80.5     to the left,  improve=4.984619, (0 missing)
      acidez_volatil < 0.59     to the right, improve=4.055789, (0 missing)
      PH             < 3.385    to the left,  improve=3.265254, (0 missing)

Node number 14: 14 observations
  predicted class=0  expected loss=0.07142857  P(node) =0.003550596
    class counts:    13     1
   probabilities: 0.929 0.071 

Node number 15: 289 observations,    complexity param=0.01096224
  predicted class=1  expected loss=0.3564014  P(node) =0.07329445
    class counts:   103   186
   probabilities: 0.356 0.644 
  left son=30 (83 obs) right son=31 (206 obs)
  Primary splits:
      fsd            < 20.5     to the left,  improve=8.036690, (0 missing)
      tsd            < 72.5     to the left,  improve=5.800931, (0 missing)
      acidez_volatil < 0.59     to the right, improve=4.639843, (0 missing)
      PH             < 3.385    to the left,  improve=2.583294, (0 missing)
      sulfatos       < 0.305    to the right, improve=2.126465, (0 missing)
  Surrogate splits:
      tsd             < 89       to the left,  agree=0.796, adj=0.289, (0 split)
      sulfatos        < 0.68     to the right, agree=0.737, adj=0.084, (0 split)
      acidez_volatil  < 0.63     to the right, agree=0.723, adj=0.036, (0 split)
      acucar_residual < 1.05     to the left,  agree=0.720, adj=0.024, (0 split)
      densidade       < 0.993165 to the right, agree=0.720, adj=0.024, (0 split)

Node number 30: 83 observations,    complexity param=0.01096224
  predicted class=0  expected loss=0.4578313  P(node) =0.02104996
    class counts:    45    38
   probabilities: 0.542 0.458 
  left son=60 (42 obs) right son=61 (41 obs)
  Primary splits:
      acidez_fixa   < 6.35     to the right, improve=5.037572, (0 missing)
      fsd           < 8.5      to the left,  improve=3.934866, (0 missing)
      grau_alcolico < 13.25    to the left,  improve=3.213366, (0 missing)
      densidade     < 0.98989  to the right, improve=3.121098, (0 missing)
      sulfatos      < 0.325    to the right, improve=2.437902, (0 missing)
  Surrogate splits:
      densidade       < 0.98961  to the right, agree=0.747, adj=0.488, (0 split)
      acucar_residual < 3.25     to the right, agree=0.687, adj=0.366, (0 split)
      PH              < 3.265    to the left,  agree=0.687, adj=0.366, (0 split)
      grau_alcolico   < 13.25    to the left,  agree=0.627, adj=0.244, (0 split)
      acido_citrico   < 0.235    to the right, agree=0.602, adj=0.195, (0 split)

Node number 31: 206 observations
  predicted class=1  expected loss=0.2815534  P(node) =0.05224448
    class counts:    58   148
   probabilities: 0.282 0.718 

Node number 60: 42 observations
  predicted class=0  expected loss=0.2857143  P(node) =0.01065179
    class counts:    30    12
   probabilities: 0.714 0.286 

Node number 61: 41 observations
  predicted class=1  expected loss=0.3658537  P(node) =0.01039817
    class counts:    15    26
   probabilities: 0.366 0.634 

Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 583 159
         1   0   0
                                          
               Accuracy : 0.7857          
                 95% CI : (0.7544, 0.8147)
    No Information Rate : 0.7857          
    P-Value [Acc > NIR] : 0.5212          
                                          
                  Kappa : 0               
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 1.0000          
            Specificity : 0.0000          
         Pos Pred Value : 0.7857          
         Neg Pred Value :    NaN          
             Prevalence : 0.7857          
         Detection Rate : 0.7857          
   Detection Prevalence : 1.0000          
      Balanced Accuracy : 0.5000          
                                          
       'Positive' Class : 0               
                                          

notamos que acertamos em 77% dos casos

Modelo 4: Regressão Logística

Técnica

A regressão logística é um modelo no qual classificamos na qual a variável dependente possuem valores binários (intervalos entre 0 e 1), ou seja, um ou o outro e as independentes podem ser categóricas ou não.

Este tipo de modelo lida muito bem com variáveis de entrada (independentes) de tipo categórica e possui um grau relativamente alto de confiabilidade.

Podemos dizer de modo geral que funciona como uma regressão linear, com exceção de que as variáveis dependentes devem ser categóricas e utiliza o método de máxima verossimilhança, ao invés dos mínimos quadrados como na regressão linear.

Como vimos, nosso dataset possui apenas dados numéricos, com exceção do tipo de vinho.

Criando modelo Árvore de Regressão Logística com todas as variáveis (quality: variável principal)

Vinho Tinto


Call:
glm(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_tinto_treino)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-2.91779  -0.42534  -0.02276   0.54255   2.23170  

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -0.0005926  0.0240603  -0.025   0.9804    
acidez_fixa      0.0989973  0.0644249   1.537   0.1247    
acidez_volatil  -0.2529691  0.0340139  -7.437 2.18e-13 ***
acido_citrico   -0.0813844  0.0420323  -1.936   0.0531 .  
acucar_residual  0.0337355  0.0340020   0.992   0.3214    
cloretos        -0.0292052  0.0330493  -0.884   0.3771    
densidade       -0.0807869  0.0650825  -1.241   0.2148    
fsd              0.0604981  0.0432092   1.400   0.1618    
grau_alcolico    0.3809766  0.0474714   8.025 2.77e-15 ***
PH              -0.0952265  0.0457608  -2.081   0.0377 *  
sulfatos         0.2302949  0.0296359   7.771 1.90e-14 ***
tsd             -0.0877090  0.0452497  -1.938   0.0529 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for gaussian family taken to be 0.5907833)

    Null deviance: 1001.6  on 1031  degrees of freedom
Residual deviance:  602.6  on 1020  degrees of freedom
AIC: 2399.5

Number of Fisher Scoring iterations: 2
Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 224  35
         1   0   0
                                         
               Accuracy : 0.8649         
                 95% CI : (0.8171, 0.904)
    No Information Rate : 0.8649         
    P-Value [Acc > NIR] : 0.5449         
                                         
                  Kappa : 0              
                                         
 Mcnemar's Test P-Value : 9.081e-09      
                                         
            Sensitivity : 1.0000         
            Specificity : 0.0000         
         Pos Pred Value : 0.8649         
         Neg Pred Value :    NaN         
             Prevalence : 0.8649         
         Detection Rate : 0.8649         
   Detection Prevalence : 1.0000         
      Balanced Accuracy : 0.5000         
                                         
       'Positive' Class : 0              
                                         

86% adicionar texto explicativo

Vinho Branco


Call:
glm(formula = qualidade ~ acidez_fixa + acidez_volatil + acido_citrico + 
    acucar_residual + cloretos + densidade + fsd + grau_alcolico + 
    PH + sulfatos + tsd, data = df_vinho_branco_treino)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.7158  -0.5311  -0.0277   0.5226   3.4384  

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      0.008325   0.015059   0.553  0.58045    
acidez_fixa      0.068133   0.023397   2.912  0.00362 ** 
acidez_volatil  -0.150709   0.016759  -8.993  < 2e-16 ***
acido_citrico    0.053721   0.018986   2.829  0.00469 ** 
acucar_residual  0.344473   0.036732   9.378  < 2e-16 ***
cloretos        -0.109751   0.020807  -5.275 1.43e-07 ***
densidade       -0.440484   0.061300  -7.186 8.43e-13 ***
fsd              0.186139   0.021158   8.797  < 2e-16 ***
grau_alcolico    0.212618   0.039284   5.412 6.72e-08 ***
PH               0.138252   0.020761   6.659 3.27e-11 ***
sulfatos         0.080651   0.016046   5.026 5.30e-07 ***
tsd             -0.062914   0.024020  -2.619  0.00886 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for gaussian family taken to be 0.6668441)

    Null deviance: 2869.4  on 2965  degrees of freedom
Residual deviance: 1969.9  on 2954  degrees of freedom
AIC: 7229.3

Number of Fisher Scoring iterations: 2
Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 583 159
         1   0   0
                                          
               Accuracy : 0.7857          
                 95% CI : (0.7544, 0.8147)
    No Information Rate : 0.7857          
    P-Value [Acc > NIR] : 0.5212          
                                          
                  Kappa : 0               
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 1.0000          
            Specificity : 0.0000          
         Pos Pred Value : 0.7857          
         Neg Pred Value :    NaN          
             Prevalence : 0.7857          
         Detection Rate : 0.7857          
   Detection Prevalence : 1.0000          
      Balanced Accuracy : 0.5000          
                                          
       'Positive' Class : 0               
                                          

78%

PCA

adicionar algo sobre o pca

Vinho Tinto

Importance of components:
                          PC1    PC2    PC3    PC4     PC5     PC6     PC7     PC8     PC9    PC10    PC11   PC12
Standard deviation     1.7669 1.4852 1.2898 1.1185 0.98442 0.80767 0.78325 0.72387 0.63491 0.57640 0.43721 0.2683
Proportion of Variance 0.2602 0.1838 0.1386 0.1043 0.08076 0.05436 0.05112 0.04367 0.03359 0.02769 0.01593 0.0060
Cumulative Proportion  0.2602 0.4440 0.5826 0.6869 0.76764 0.82200 0.87313 0.91679 0.95038 0.97807 0.99400 1.0000

Vinho Branco

Importance of components:
                          PC1    PC2    PC3     PC4     PC5     PC6    PC7     PC8     PC9    PC10    PC11    PC12
Standard deviation     1.8309 1.2696 1.1724 1.04334 0.99212 0.96539 0.8743 0.83039 0.74504 0.59230 0.52930 0.12790
Proportion of Variance 0.2794 0.1343 0.1145 0.09071 0.08202 0.07766 0.0637 0.05746 0.04626 0.02923 0.02335 0.00136
Cumulative Proportion  0.2794 0.4137 0.5282 0.61895 0.70097 0.77864 0.8423 0.89980 0.94606 0.97529 0.99864 1.00000

K-Means

Vinho Tinto

Vinho Branco

Conclusões

FIAP-06IA

2019-06-22